/** @brief File declaring the main window of the application.
 *
 * This file contains the declaration of the application main window.
 *
 * @file MainWindow.hpp
 * @author Johan "Solo" Luisier
 * @date 2013/04/08
 */
#ifndef MAINWINDOW_HPP
#define MAINWINDOW_HPP

#include <Core/RuleData.hpp>

#include <QtGui/QMainWindow>

namespace Ui {
    class MainWindow;
}

class RuleManager;

/** @brief Class implementing the application main window.
 *
 * This class implements the application main window. Its main component is the
 * Visualisation widget, and it adds controls for changing the geometry, the
 * rules, etc.
 *
 * @class MainWindow "MainWindow.hpp" "UI/MainWindow.hpp"
 */
class MainWindow : public QMainWindow
{
    Q_OBJECT

public:
    explicit MainWindow(QWidget *parent = 0);
    ~MainWindow();
protected slots:
    void showRuleEditor();
protected:
    RuleData Rules;

private:
    /** @brief Pointer on the UI object used for the design of the window.
     */
    Ui::MainWindow *ui;
    RuleManager* RuleEditor;
};

#endif // MAINWINDOW_HPP
